;-> Orologio by Stefano Regattin
;d> 9 ottobre 1998 da Clock
;m> 10,11,16,17,19,24,29 ottobre 1998
;m> 4,6 novembre 1998
;m> 13,14,23 dicembre 1998
;m> 3 gennaio 1999
;m> 9,12 marzo 1999
;m> 25,26 settembre 1999
;m> 1,2,3,5,6,7,8,9,10,11 febbraio 2000
;---------------------------------------
#HaiCambiatoLeDimensioniDellaFinestra=2
#HaiPremutoUnTastoDelTopo=8
#HaiRilasciatoUnGadget=$40
#HaiChiusoLaFinestra=$200

DEFTYPE .l RastPortFinestra

DEFTYPE .b AltezzaFontRegistrata,NumeroToolType,ToolTypeScritti

DEFTYPE .w

AltezzaFont.b=13

Statement ApriFinestraZero{}
SHARED LunXFinestraZero
SHARED LunYFinestraZero
SHARED PosXFinestraZero
SHARED PosYFinestraZero
SHARED RastPortFinestra
 Window 0,PosXFinestraZero,PosYFinestraZero,LunXFinestraZero,LunYFinestraZero,$140F,"",1,2
 WTitle "Orologio","by Stefano Regattin e-mail>StefanoRegattin@lycosmail.com"
 RastPortFinestra=RastPort(0)
 WindowFont 0
End Statement

Statement LeggiToolType{}
SHARED FontOrologio$
SHARED FontOrologioRegistrato$
SHARED IconaOrologio$
SHARED AltezzaFont
SHARED AltezzaFontRegistrata
SHARED PosXFinestraZero
SHARED PosXFinestraZeroRegistrata
SHARED PosYFinestraZero
SHARED PosYFinestraZeroRegistrata
 ToolTypeLetti.l=GetIconObject(IconaOrologio$)
 If ToolTypeLetti>0
  NuovoFontOrologio$=FindToolValue("FONTNAME")
  NuovaAltezzaFont$=FindToolValue("FONTSIZE")
  NuovaPosXFinestraZero$=FindToolValue("WINDOWX")
  NuovaPosYFinestraZero$=FindToolValue("WINDOWY")
  If NuovoFontOrologio$<>""
   FontOrologioRegistrato$=NuovoFontOrologio$
   FontOrologio$=NuovoFontOrologio$
  EndIf
  If NuovaAltezzaFont$<>""
   AltezzaFontRegistrata=Val(NuovaAltezzaFont$)
   AltezzaFont=Val(NuovaAltezzaFont$)
  EndIf
  If NuovaPosXFinestraZero$<>""
   PosXFinestraZeroRegistrata=Val(NuovaPosXFinestraZero$)
   PosXFinestraZero=Val(NuovaPosXFinestraZero$)
  EndIf
  If NuovaPosYFinestraZero$<>""
   PosYFinestraZeroRegistrata=Val(NuovaPosYFinestraZero$)
   PosYFinestraZero=Val(NuovaPosYFinestraZero$)
  EndIf
  FreeIconObject
 EndIf
End Statement

Statement ScriviToolType{}
SHARED FontOrologio$
SHARED FontOrologioRegistrato$
SHARED IconaOrologio$
SHARED AltezzaFont
SHARED AltezzaFontRegistrata
SHARED PosXFinestraZero
SHARED PosXFinestraZeroRegistrata
SHARED PosYFinestraZero
SHARED PosYFinestraZeroRegistrata
SHARED ToolTypeScritti
 ToolTypeLetti.l=GetIconObject(IconaOrologio$)
 If ToolTypeLetti>0
  If FindToolType("FONTNAME")=True
   SetToolValue "FONTNAME",FontOrologio$
  Else
   NewToolType "FONTNAME",FontOrologio$
  EndIf
  If FindToolType("FONTSIZE")=True
   SetToolValue "FONTSIZE",Str$(AltezzaFont)
  Else
   NewToolType "FONTSIZE",Str$(AltezzaFont)
  EndIf
  If FindToolType("WINDOWX")=True
   SetToolValue "WINDOWX",Str$(PosXFinestraZero)
  Else
   NewToolType "WINDOWX",Str$(PosXFinestraZero)
  EndIf
  If FindToolType("WINDOWY")=True
   SetToolValue "WINDOWY",Str$(PosYFinestraZero)
  Else
   NewToolType "WINDOWY",Str$(PosYFinestraZero)
  EndIf
  ToolTypeScritti=PutIconObject(IconaOrologio$)
  If ToolTypeScritti=True
   FontOrologioRegistrato$=FontOrologio$
   AltezzaFontRegistrata=AltezzaFont
   PosXFinestraZeroRegistrata=PosXFinestraZero
   PosYFinestraZeroRegistrata=PosYFinestraZero
  EndIf
  FreeIconObject
 EndIf
End Statement

Statement CercaFont{}
SHARED FontOrologio$
SHARED AltezzaFont
 NEWTYPE .FontInfo
  Nome$
  Altezza.w
  Stile.b
  Segnalatori
  PennaUno
  PennaDue
  ModoDisegno
  Pad
 End NEWTYPE

 *Font.FontInfo=ASLFontRequest(0)

 If *Font<>0
  FontOrologio$=*Font\Nome
  AltezzaFont=*Font\Altezza
 EndIf
End Statement

Statement Impostazioni{}
SHARED OraAllarme$
SHARED OraDiOggi$
SHARED FontOrologio$
SHARED FontOrologioRegistrato$
SHARED AltezzaFont
SHARED AltezzaFontRegistrata
SHARED LunXSchermo
SHARED PosXFinestraZero
SHARED PosXFinestraZeroRegistrata
SHARED PosYFinestraZero
SHARED PosYFinestraZeroRegistrata
SHARED StatoAllarme
SHARED ToolTypeScritti
 StringGadget 0,1,1,0,0,6,6*8
 StringGadget 0,1,14,0,1,25,106
 StringGadget 0,75,1,0,2,4,4*8
 TextGadget 0,58,1,1,3,"A"
 StringGadget 0,9,27,0,4,5,5*8
 StringGadget 0,67,27,0,5,5,5*8
 TextGadget 0,3,40,1,6,"*** Salva ***"
 PosXFinestraZero=WindowX-WLeftOff
 PosYFinestraZero=WindowY-WTopOff
 PosXFinestraUno=WindowX
 PosYFinestraUno=WindowY
 LunXFinestraUno=124
 LunYFinestraUno=74
 If PosXFinestraUno+124>LunXSchermo Then PosXFinestraUno=LunXSchermo-124
 If PosYFinestraUno+74>WBHeight Then PosYFinestraUno=WBHeight-74
 Window 1,PosXFinestraUno,PosYFinestraUno,LunXFinestraUno,LunYFinestraUno,$140A,"",1,2,0
 WTitle "Impostazioni","Imposta le variabili dell'orologio"
 WindowFont 1
 WLocate 0,29:Print "X"
 WLocate 58,29:Print"Y"
 If OraAllarme$="" Then OraAllarme$=UnLeft$(OraDiOggi$,3)
 Repeat
  SetString 0,0,OraAllarme$
  Redraw 1,0
  SetString 0,1,FontOrologio$
  Redraw 1,1
  SetString 0,2,Str$(AltezzaFont)
  Redraw 1,2
  SetString 0,4,Str$(PosXFinestraZero)
  Redraw 1,4
  SetString 0,5,Str$(PosYFinestraZero)
  Redraw 1,5
  ValoriCambiati.b=False
  If FontOrologio$<>FontOrologioRegistrato$ Then ValoriCambiati=True
  If AltezzaFont<>AltezzaFontRegistrata Then ValoriCambiati=True
  If PosXFinestraZero<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  If PosYFinestraZero<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  If ValoriCambiati=True Then Enable 0,6 Else Toggle 0,6,Off:Disable 0,6
  Redraw 1,6
  EventoFinestra.l=WaitEvent
  If EventoFinestra=#HaiRilasciatoUnGadget
   If GadgetHit<>3 AND GadgetHit<>6 Then ActivateString 1,GadgetHit
   Select GadgetHit
   Case 0
    OraAllarme$=StringText$(0,0)
   Case 1
    NuovoFontOrologio$=StringText$(0,1)
    If NuovoFontOrologio$="" Then CercaFont{}
    If Right$(NuovoFontOrologio$,5)<>".font" Then NuovoFontOrologio$+".font"
    If Len(NuovoFontOrologio$)>0
     If Exists("FONTS:"+NuovoFontOrologio$)
      FontOrologio$=NuovoFontOrologio$
     EndIf
    EndIf
   Case 2
    AltezzaFont=Val(StringText$(0,2))
    AltezzaFont=Max(AltezzaFont,6)
   Case 3
    StatoAllarme=GadgetStatus(0,3)
   Case 4
    PosXFinestraZero=Val(StringText$(0,4))
   Case 5
    PosYFinestraZero=Val(StringText$(0,5))
   Case 6
    ScriviToolType{}
    If ToolTypeScritti=True
     Toggle 0,6,Off
     Disable 0,6
     Redraw 1,6
    Else
     Toggle 0,6,On
    EndIf
   End Select
  EndIf
 Until EventoFinestra=#HaiChiusoLaFinestra
 CloseWindow 1
 Use Window 0
 WindowFont 0
End Statement

Statement DataDiOggi{}
SHARED Allarme$
SHARED DataDiOggi$
SHARED LunghezzaDataDiOggi
SHARED LunghezzaScrittaAllarme
SHARED RastPortFinestra
 Select WeekDay
 Case 0
  GiornoDellaSettimana$="Dom"
 Case 1
  GiornoDellaSettimana$="Lun"
 Case 2
  GiornoDellaSettimana$="Mar"
 Case 3
  GiornoDellaSettimana$="Mer"
 Case 4
  GiornoDellaSettimana$="Gio"
 Case 5
  GiornoDellaSettimana$="Ven"
 Case 6
  GiornoDellaSettimana$="Sab"
 End Select
 Giorno$=Str$(Days)
 Select Months
 Case 1
  Mese$="gennaio"
 Case 2
  Mese$="febbraio"
 Case 3
  Mese$="marzo"
 Case 4
  Mese$="aprile"
 Case 5
  Mese$="maggio"
 Case 6
  Mese$="giugno"
 Case 7
  Mese$="luglio"
 Case 8
  Mese$="agosto"
 Case 9
  Mese$="settembre"
 Case 10
  Mese$="ottobre"
 Case 11
  Mese$="novembre"
 Case 12
  Mese$="dicembre"
 End Select
 Anno$=Str$(Years)
 DataDiOggi$=" "+GiornoDellaSettimana$+", "+Giorno$+" "+Mese$+" "+Anno$+" "
 LunghezzaDataDiOggi.w=TextLength_(RastPortFinestra,&DataDiOggi$,Len(DataDiOggi$))
End Statement

WBStartup

AltezzaFontSchermo.b=8
OpenFontPrefs
 AltezzaFontSchermo.b=DefaultFontHeight(2)
CloseFontPrefs

WbToScreen 0

IndirizzoSchermo.l=Peek.l(Addr Screen(0))
LunXSchermo=Peek.w(IndirizzoSchermo+12)

FontOrologio$="Data70.font"

PosXFinestraZero=0
PosYFinestraZero=AltezzaFontSchermo+3

IconaOrologio$=ProgPath$+".info"

LeggiToolType{}

LoadFont 0,FontOrologio$,AltezzaFont

LoadFont 1,"topaz.font",8

LunXFinestraZero=70
LunYFinestraZero=30

Window 0,PosXFinestraZero,PosYFinestraZero,LunXFinestraZero,LunYFinestraZero,$140F,"",1,2
RastPortFinestra=RastPort(0)
WindowFont 0

DataDiOggi$=Date$(SystemDate)

DataDiOggi{}

LunXFinestraZero=22+LunghezzaDataDiOggi
LunYFinestraZero=WTopOff+AltezzaFont*2+6

ApriFinestraZero{}

RaggioCerchio=AltezzaFont/2

Repeat
 EventoFinestra.l=Event
 If EventoFinestra=#HaiCambiatoLeDimensioniDellaFinestra
  AltezzaFont=InnerHeight/2
  RaggioMassimoCerchio=AltezzaFont/2
  LoadFont 0,FontOrologio$,AltezzaFont
  WindowFont 0
  WCls
 EndIf
 If EventoFinestra=#HaiPremutoUnTastoDelTopo
  PrecedenteFontOrologio$=FontOrologio$
  PrecedenteAltezzaFont.b=AltezzaFont
  Impostazioni{}
  Use Window 0
  FinestraZeroAggiornata.b=False
  If FontOrologio$<>PrecedenteFontOrologio$ OR AltezzaFont<>PrecedenteAltezzaFont
   LoadFont 0,FontOrologio$,AltezzaFont
   WindowFont 0
   DataDiOggi{}
   LunXFinestraZero=WLeftOff+LunghezzaDataDiOggi+18
   LunYFinestraZero=WTopOff+AltezzaFont*2+6
   If PosXFinestraZero+LunXFinestraZero-1>LunXSchermo
    PosXFinestraZero=LunXSchermo-LunXFinestraZero
   EndIf
   If PosYFinestraZero+LunYFinestraZero-1>WBHeight
    PosYFinestraZero=WBHeight-LunYFinestraZero
   EndIf
   CloseWindow 0
   ApriFinestraZero{}
   FinestraZeroAggiornata=True
  EndIf
  If FinestraZeroAggiornata=False
   If PosXFinestraZero<>WindowX-WLeftOff OR PosYFinestraZero<>WindowY-WTopOff
    If PosXFinestraZero+LunXFinestraZero-1>LunXSchermo
     PosXFinestraZero=LunXSchermo-LunXFinestraZero
    EndIf
    If PosYFinestraZero+LunYFinestraZero-1>WBHeight
     PosYFinestraZero=WBHeight-LunYFinestraZero
    EndIf
    CloseWindow 0
    ApriFinestraZero{}
   EndIf
  EndIf
  RaggioMassimoCerchio=AltezzaFont/2
  RaggioCerchio=RaggioMassimoCerchio
 EndIf
 DataDiOggi$=Date$(SystemDate)
 DataDiOggi{}
 XData.w=(InnerWidth-LunghezzaDataDiOggi)/2
 WLocate XData,0:Print DataDiOggi$
 OraDiOggi$=Str$(Hours/10)
 OraDiOggi$+Str$(Hours MOD 10)+":"
 OraDiOggi$+Str$(Mins/10)
 OraDiOggi$+Str$(Mins MOD 10)+":"
 OraDiOggi$+Str$(Secs/10)
 OraDiOggi$+Str$(Secs MOD 10)
 LunghezzaOraDiOggi.w=TextLength_(RastPortFinestra,&OraDiOggi$,Len(OraDiOggi$))
 XOra.w=(InnerWidth-LunghezzaOraDiOggi)/2-1
 WLocate XOra,AltezzaFont:Print " ",OraDiOggi$," "
 If StatoAllarme=True
  If Left$(OraDiOggi$,5)=OraAllarme$ Then BeepScreen 0
  XAllarme=InnerWidth-1-AltezzaFont/2
  YAllarme=InnerHeight-1-AltezzaFont/2
  WCircle XAllarme,YAllarme,RaggioCerchio,1
 EndIf
 Delay_ 50
 If StatoAllarme=True
  WCircle XAllarme,YAllarme,RaggioCerchio,0
  RaggioCerchio+1
  If RaggioCerchio>RaggioMassimoCerchio Then RaggioCerchio=1
 EndIf
Until EventoFinestra=#HaiChiusoLaFinestra
End
